Persistent Memory Programming Abstractions in Context of Concurrent Applications
نویسندگان
چکیده
The advent of non-volatile memory (NVM) technologies like PCM, STT, memristors and Fe-RAM is believed to enhance the system performance by getting rid of the traditional memory hierarchy by reducing the gap between memory and storage. This memory technology is considered to have the performance like that of DRAM and persistence like that of disks. Thus, it would also provide significant performance benefits for big data applications by allowing in-memory processing of large data with the lowest latency to persistence. Leveraging the performance benefits of this memory-centric computing technology through traditional memory programming is not trivial and the challenges aggravate for parallel/concurrent applications. To this end, several programming abstractions have been proposed like NVthreads, Mnemosyne and intel’s NVML. However, deciding upon a programming abstraction which is easier to program and at the same time ensures the consistency and balances various software and architectural trade-offs is openly debatable and active area of research for NVM community. We study the NVthreads, Mnemosyne and NVML libraries by building a concurrent and persistent set and open addressed hash-table data structure application. In this process, we explore and report various tradeoffs and hidden costs involved in building concurrent applications for persistence in terms of achieving efficiency, consistency and ease of programming with these NVM programming abstractions. Eventually, we evaluate the performance of the set and hash-table data structure applications. We observe that NVML is easiest to program with but is least efficient and Mnemosyne is most performance friendly but involves significant programming efforts to build concurrent and persistent applications.
منابع مشابه
Concurrent Algorithms for Emerging Hardware Platforms
of “ Concurrent Algorithms for Emerging Hardware Platforms ” by Irina Calciu, Ph.D., Brown University, May 2015 Computer architecture has recently seen an explosion of innovation that has enabled more parallel execution, while parallel software systems have been making strides in providing more simplified programming models. The number of computing cores used in every area of the software ecosy...
متن کاملConcurrent Objects à la Carte
Services are autonomous, self-describing, technology-neutral software units that can be described, published, discovered, and composed into software applications at run-time. Designing software services and composing services in order to form applications or composite services requires abstractions beyond those found in typical object-oriented programming languages. In this paper, we explore a ...
متن کاملCan We Efficiently Check Concurrent Programs Under Relaxed Memory Models in Maude?
Relaxed memory models offer suitable abstractions of the actual optimizations offered by multi-core architectures and by compilers of concurrent programming languages. Using such abstractions for verification purposes is challenging in part due to their inherent non-determinism which contributes to the state space explosion. Several techniques have been proposed to mitigate those problems so to...
متن کاملLanguage Support for Communicating Transactions
In the context of databases, a transaction is a sequence of data operations that are executed atomically and in isolation: either all operations are executed or none is; and their effects are visible to the environment only after the transaction commits. Database transactions are well-established abstractions that simplify concurrent data access in computer programming. Recently Software Transa...
متن کاملThreads A System for the Support of Concurrent Programming
We describe a system, Threads, whose purpose is to make concurrency a practical programming concept. This system, which has been implemented on workstations and a shared-memory multiprocessor, supports the concept of a thread, which is an independent unit of execution, capable of concurrent execution with other threads. Threads have a very inexpensive implementation, allowing a programmer to wr...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- CoRR
دوره abs/1712.04989 شماره
صفحات -
تاریخ انتشار 2017